#ifndef _RENZO_RENDER_SYSTEM_
#define _RENZO_RENDER_SYSTEM_

#include "RenzoMustHave.h"

namespace Renzo {
/*
@description
RenderSystem is an abstract class defining a renderer and its internal components. 
The implementation of this class comes from external plugins (DLLs).
*/
class RENZODERER_API RenderSystem
{
public:
	RenderSystem(void);
	virtual ~RenderSystem(void);

public:
	virtual const char* getName() = 0;

	/**
	 Entry point of render system
	 */
	virtual void render();

public:
	VertexBuffer*	getVertexBuffer();
	RenderBuffer*	getRenderBuffer();
	Display*		getDisplay();
protected:
	VertexBuffer*	vbuf;		// vertex buffer must be initiated by the RenderSystem subclass
	RenderBuffer*	rbuf;		// render buffer must be initiated by the RenderSystem subclass
	Display*		disp;		// display must be initiated by the RenderSystem subclass
};
}

#endif